package top.jacktgq.itheima.bio.TCP.Demo2;
/*
 * 实现TCP图片上传服务器
 * 实现步骤：
 *    1.ServerSocket套接字对象，监听端口8888
 *    2.方法accept()获取客户端的连接对象
 *    3.客户端的连接对象获取字节输入流，读取客户端发送图片
 *    4.创建File对象，绑定上传文件夹
 *      判断文件夹是否存在，不存在创建文件夹
 *    5.创建一个字节输出流，数据目的File对象所在文件夹
 *    6.字节流读取图片，字节流将图片写入到目的文件夹中
 *    7.将上传成功回写给客户端
 *    8.关闭资源
 */

import java.io.*;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.Random;

public class TCPServer {

	public static void main(String[] args) throws IOException {
		
		ServerSocket server = new ServerSocket(8888);
		
		Socket socket = server.accept();
		
		//通过客户端连接对象，获取字节输入流，读取客户端图片
		InputStream in = socket.getInputStream();
		
		//防止文件被覆盖，从新定义文件名字
		//规则：域名+毫秒值+6位随机数字
		String fileName = "JackTGQ" + System.currentTimeMillis() 
		                            + new Random().nextInt(999999) 
		                            + ".png";
		//创建File目的文件
		File f = new File("images/TCPServer/" + fileName);
		
		//创建字节输出流，将图片写入到目的文件中
		FileOutputStream fos = new FileOutputStream(f);
		
		//读写字节数组
		int len = 0;
		byte[] bytes = new byte[1024];
		while((len = in.read(bytes))!=-1){
			fos.write(bytes,0,len);
		}
		
		OutputStream out = socket.getOutputStream();
		out.write("上传成功！".getBytes());
		
	    fos.close();
		socket.close();
		server.close();
	}
}
